//
//  main.c
//  Scanf函数
//
//  Created by 周成龙 on 17/4/21.
//  Copyright © 2017年 ZCL. All rights reserved.
//

#include <stdio.h>

int main(int argc, const char * argv[]) {
    // insert code here...
    //printf("Hello, World!\n");
    //格式：scanf("格式控制符"， 变量地址列表);
    /**
     支持性原理：阻塞式的函数，当CPU执行到scanf函数的时候，CPU会暂停执行，不会继续往下执行
     
     1. 在执行scanf函数的时候，会让用户输入一个数据，用户将数据输入完成之后，并不是将这个数据赋值给变量，而是将这个数据存储在缓冲区内，输入的任何数据都会存储在缓冲区内。
     2. 在执行scanf函数的时候，会先检查缓冲区内是否有数据
        若缓冲区内没有数据，会让用户从键盘输入
        若有数据，会直接将缓冲区内的数据拿出来，不会让用户输入。
     3. 从缓冲区拿数据的时候，如果要拿的数据类型是整型或者实型
        如果拿到的是空格 回车 Tab键 就会被忽略，继续往下拿；
        如果要拿的数据的类型是字符串，不会忽略任何数据。
     */
    
    //Demo1
//    int num = 0;
//    scanf("%d", &num);
//    printf("你输入的数字是:%d\n", num);
    
    //Demo2
//    int qqNum = 0;
//    int qqPed = 0;
//    printf("请输入账号:");
//    scanf("%d", &qqNum);
//    printf("请输入密码:");
//    scanf("%d", &qqPed);
    
    //Demo2
//    int age;
//    printf("几年多大了？");
//    scanf("%d", &age);
//    printf("好巧啊，我今年也是%d\n", age);
    
    //Demo3
//    int num1 = 0, num2 = 0;
//    printf("请输入两个数据：");
//    scanf("%d%d", &num1, &num2);
//    printf("num1=%d, num2=%d\n", num1, num2);
    
    // Demo4自定义分隔符
//    int num1 = 0, num2 = 0;
//    printf("请输入两个数据：");
//    scanf("%d-%d", &num1, &num2);
//    printf("num1=%d, num2=%d\n", num1, num2);
    
    //Demo5
//    int num1 = 0;
//    int num2 = 0;
//    printf("请输入第1个数字：");
//    scanf("%d", &num1);
//    printf("请输入第2个数字：");
//    scanf("%d", &num2);
//    printf("num1=%d, num2=%d", num1, num2);
    
    //Demo6
    int num = 0;
    printf("请输入1个数字：");
    scanf("%d", &num);
    printf("num=%d", num);
    rewind(stdin);// 清空缓冲区的所有数据
    char ch = 'a';
    printf("请输入1个字符：");
    scanf("%c", &ch);
    printf("ch=%c", ch);
    
    
    
    
    
    return 0;
}
